In modern computer networks, multiple computers and other hardware devices are interconnected and can operate as a distributed computer system. Server computers in such networks are configured to perform tasks in response to requests received from host computers which are connected to the same network. A host connected to a server is identified at the server side as a connection, where a single host can establish multiple connections with a given server. In a computer storage system, one or more storage control devices can be configured to manage and control a storage space comprising a plurality of storage devices, and make the storage space accessible for connections. For example, in a SCSI computer storage system (operating with a SCSI protocol) different connections, connecting one or more hosts to the storage system, enable sending different types of SCSI commands to a storage device, operating as a SCSI target. SCSI commands include, inter alia, different types of SCSI control commands, which enable a connection to retrieve information in respect of different storage devices operating within the storage system and in respect of data stored in the storage devices. Examples of SCSI control commands include: SCSI Request Sense command directed for obtaining error information from a SCSI target device and SCSI Read Capacity command, which is used for obtaining data capacity information from a target device. In general, responsive to a request issued by a connection, memory resources are allocated by the storage control devices in favor of the connections in order to facilitate the execution of the requested task.
In view of the growing size and complexity of computer systems infrastructure (including for example storage systems) and in view of the fact that the available memory resources which are necessary for executing incoming requests are typically limited, a need arises for solutions to enable efficient management and distribution of the memory resources to the different connections issuing requests (referred to herein as “requesting connections”).
Published references considered to be relevant as background to the presently disclosed subject matter are listed below. Acknowledgement of the references herein is not to be inferred as meaning that these are in any way relevant to the patentability of the presently disclosed subject matter.
U.S. Pat. No. 6,650,618 discloses a fairness scheme for managing data flow between nodes in a bi-directional ring network. A method controls the output bandwidth of nodes in a bi-directional ring network by: identifying a congested span comprising a head node having a congested downstream link, and a plurality of chain nodes contributing to the congestion in the downstream link: adjusting the output bandwidth of the head node as a function of the congestion in the downstream link; and adjusting the output bandwidth of the chain nodes as a function of the congestion in the downstream link.
U.S. Pat. No. 7,032,222 discloses a method for flexible allocation of a resource in which a soft limit and a hard limit are assigned to each of a set of potential users of the resource. The soft limits are selected to guarantee access to the resource by all of the potential users. The hard limits are selected to enable each potential user to exceed the corresponding soft limit on a first-come-first-served basis. A request from a user for allocation of a portion of the resource is handled by granting the request, if the request, if allowed, would not exceed soft limit assigned to the user. The request is denied if the request, if allowed, would exceed the hard limit assigned to the user. To avoid overtaxing the capacity of the resource, the request is denied even when the hard limit of the user is not exceeded if the request, if allowed, would cause a total allocation of the resource to exceed a high watermark assigned to the resource.